import tushare as ts
import pandas as pd
from sqlalchemy import create_engine
from DatetimeUtils import choose_day
import logging
import matplotlib.pyplot as plt
from ListUtils import anti_join
import time

"""
LPR贷款基础利率
"""


def deal_append(query_start_, query_end_, engine, pro):
    """
    通过anti_join函数处理增量数据
    """
    source_list_ = pro.shibor_lpr(start_date=query_start_, end_date=query_end_)
    # 最好是单元数组，不然merge之后会有问题。
    sql_ = 'select s.date from shibor_lpr s WHERE s.date >= ' + query_start_ + ' and s.date <= ' + query_end_
    target_list_ = pd.read_sql(sql_, engine)
    if len(target_list_) == 0:
        # 数据库内未找到数据则全部添加
        source_list_.to_sql('shibor_lpr', con=engine, index=False, index_label=['date'], if_exists='append')
        print('数据库内未找到数据则全部添加：(%s)' % source_list_)
    else:
        # 数据库内有历史数据则增量添加
        source_list_ = anti_join(source_list_, target_list_, ['date'])
        if len(source_list_) > 0:
            print('增量：(%s)' % source_list_)
            source_list_.to_sql('shibor_lpr', con=engine, index=False, index_label=['date'], if_exists='append')
    time.sleep(5)


def insert_history_data_shibor_lpr(engine, pro):
    """
    保存历史数据，通过对比添加数据
    """
    current_year = choose_day(0).strftime('%Y')
    start_year = 2013 # shibor记录从20131025开始
    """
    处理历史数据
    """
    for i in range(start_year, int(current_year)):
        query_start = '%d' %i + '0101'  # 查询开始
        query_end = '%d' %i  + '1231'  # 查询结束
        if i == 2013:
            query_start = '20131025'
        deal_append(query_start, query_end, engine, pro)

    """
    处理当年历史数据
    """
    current_day = choose_day(0).strftime('%Y%m%d')
    year_first_day = current_year + '0101'
    deal_append(year_first_day, current_day, engine, pro)



def update_current_data_shibor_lpr(engine, pro):
    """
    更新当前数据，后续使用定时器
    """
    day_updates = 10 #设定更新30天数据
    current_day = choose_day(0).strftime('%Y%m%d')
    that_day = choose_day(day_updates).strftime('%Y%m%d')
    deal_append(that_day, current_day, engine, pro)

